pub fn dp_rec_mc(amount: u32) -> u32 {
    // TODO: 这里写逻辑
    // 可用的纸币面额
    let coins = [1, 2, 5, 10, 20, 30, 50, 100];
    
    // dp数组，初始化为一个较大的数值，表示暂未找到解
    let mut dp = vec![u32::MAX; (amount + 1) as usize];
    dp[0] = 0; // 0元时不需要纸币

    // 动态规划计算每个金额的最小纸币数
    for i in 1..=amount as usize {
        for &coin in &coins {
            if i >= coin as usize {
                dp[i] = dp[i].min(dp[i - coin as usize] + 1);
            }
        }
    }

    dp[amount as usize]
}
